Мой Справочник | PHP | Формы

Формы
Форма
<form action="check.php" name="test-form" method="post">
  <table>
    <caption>Форма</caption>
    <tr>
      <td><label for="first-name-id">Имя: </label></td>
      <td><input type="text" placeholder="Name" name="first-name" id="first-name-id"></td>
    </tr>
    <tr>
      <td><label for="sername-id">Фамилия: </label></td>
      <td><input type="text" placeholder="Sername" name="sername" id="sername-id"></td>
    </tr>
    <tr>
    <td><label for="email-id">Email: </label></td>
      <td><input type="email" placeholder="Email" name="email" id="email-id"></td>
    </tr>
    <tr>
      <td><label for="date-id">Дата: </label></td>
      <td><input type="date" placeholder="Date" name="date" id="date-id"></td>
    </tr>
    <tr>
      <td>Отправить: </td>
      <td><input type="submit" value="Done" name="done"></td>
      </tr>
  </table>
</form>
Форма
Отправить:
action="путь к php-файлу" - файл обработки формы, если записать action="", то обработка будет осуществляться на этой же странице
name и method - обязательные атрибуты;
post - сохраняет данные для отправки в php-файле, который указан в атрибуте action;
get - делает запрос к серверу через адресную строку браузера (?text=ключевое слово1 ключевое слово2)
submit - после нажатия делает переход на файл, указанный в action(check.php)
Глобальные
переменные
print_r($_POST);
print_r($_GET);
print_r($_REQUEST);
$_POST - хранит все переданные значения в ассоциативном массиве, имена индексов которого совпадают с атрибутами name у полей формы.
$_GET - хранит все запрашиваемые значения в ассоциативном массиве, имена индексов которого совпадают с атрибутами name у полей формы.
В них храняться все переданные значения пользователей
$_REQUEST - хранит все переданные значения и методом get и post
Обработка формы (check.php)
// ВЫВОД ДАННЫХ $_POST:
print_r($_POST);
echo "<hr>";

// ВЫВОД ВВЕДЁННЫХ ДАННЫХ:
// Имя:
echo "<b>1. Ваше имя: </b>";
echo("<i>".$_POST["first-name"]."</i><br>");

// Фамилия:
echo "<b>2. Ваша фамилия: </b>";
echo("<i>".$_POST["sername"]."</i><br>");

// E-mail:
echo "<b>3. Ваш e-mail: </b>";
echo("<i>".$_POST["email"]."</i><br>");

// Дата:
echo "<b>4. Дата заполнения: </b>";
echo("<i>".$_POST["date"]."</i><br>");


// ВАЛИДАЦИЯ ФОРМЫ:
if ($_POST["first-name"] == "") {
  echo "<span style=\"color: red;\">Вы не ввели своё <b>имя</b>! </span><br>";
}
if ($_POST["sername"] == "") {
  echo "<span style=\"color: red;\">Вы не ввели свою <b>фамилию</b>! </span><br>";
}
if ($_POST["email"] == "") {
  echo "<span style=\"color: red;\">Вы не ввели ваш <b>email</b>! </span><br>";
}
if ($_POST["date"] == "") {
  echo "<span style=\"color: red;\">Вы не ввели <b>дату заполнения</b>!</span> <br>";
}
if (($_POST["first-name"] == true) &&
    ($_POST["sername"]    == true) &&
    ($_POST["email"]      == true) &&
    ($_POST["sername"]    == true) &&
    ($_POST["date"]       == true)) {
  echo "<span style=\"color: green; font-size: 2em;\"><b>Вы полностью заполнили форму!</b></span>";
}
После нажатия на <input type="submit"> происходит перенаправление на файл check.php, и вся обработка формы будет выполненна в нём
Обработка формы внутри текущей страницы
// Обработка формы будет выполнена после нажатия на
<input[type="submit"] name="done">, так работает функция isset

if (isset($_POST["done"])) {
  echo "<hr> <h2>Выполнена обработка формы</h2>";
  // php-код из check.php
}
Можно писать php-код на самом "верху" страницы.
Значение атрибута action оставить пустым (action=""). Результат выполнения php-кода будет отображён вверху страницы
Куки
setcookie("num", 10, time() + 10);
$_COOKIE;

session_start();
$_SESSION;
session_destroy();
Куки хранятся в браузере, а Сессии на сервере
Обработка формы
Сохранение данных в полях формы после перезагрузки страницы
// 1. Сохраняем значение полей формы в переменные
if (isset($_POST["done"])) {
  $first_name = htmlspecialchars($_POST["fifrst-name"]);
  ...
// 2. Создаём сессию и сохраняем все переменные в сессию
  $_SESSION["first-name"] = $first_name;
  ...
}
// 3. Прописываем в поля форм значения массива SESSION
<input type="text name="first-name"
value="<?php echo $_SESSION["first-name"]>">    или так:
value="<?=$_SESSION["first-name"]>">
Появление ошибки при незаполнении форм
// 1. Создаём условие внутри основного
$error = false;
if ($first_name == "" || !preg_match("/@/", $first_name)) {
  $error_first_name = "Вы не корректно указали своё имя";
  $error = true;
}
// далее создаём условие для каждого поля
// 2. Создаём переменные ошибок
$error_first_name = "Вы не указали своё имя";

// 3. Вставляем спаны после полей форм
<input type="text name="first-name"
  value="<?=$_SESSION["first-name"]>">
  <span style="color: red;"></span>

// 4. Прописываем в него значение переменной $error
<span style="color: red;"><?=$error_first_name></span>
!preg_match("/@/", $first_name) - проверяет, чтобы поле не содержало спецсимволы или некорректность.
Если $error = true, то сообщение не будем отправлять
strlen - также можно указывать в условии, проверка на длину строки
Отправка формы
// Создаём еще одно внутреннее условие
if (!$error) {
  пишем код для отправки на почту или в базу данных
}